package com.atguigu04.example.exer4;

/**
 * ClassName: test_algorithm
 * Description:
 *根据上一章数组中的常用算法操作，自定义一个操作int[]的工具类。
 * 涉及到的方法有：求最大值、最小值、总和、平均数、遍历数组、复制数组、
 *              数组反转、数组排序(默认从小到大排序)、查找等
 * @Author liu
 * @Create 2024/8/18 17:48
 * @Version 1.0
 */

public class test_algorithm {
    public static void main(String[] args) {
    Arrary p1 = new Arrary();
    int[] arr = new int[]{32,33,556,63};

    int max = p1.getMax(arr);
        System.out.println(max);

        p1.print(arr);

        p1.reverse(arr);

        int target =666;
         int nnn=p1.find(arr,target);
        System.out.println(nnn);

    }

}
class Arrary{
    /**
     *  获取int[]数组的最大值
     * @param arr 要获取最大值的数组
     * @return  max
     */
    public int getMax(int[] arr){
        int max = 0;
        for (int i = 0; i <arr.length ; i++) {
            if(max<arr[i]){
                max =arr[i];
            }

        }
        return max;
    }

    /**
     * 最小值
     * @param arr
     * @return min
     */
    public int getMin(int[] arr){
        int min = 0;
        for (int i = 0; i <arr.length ; i++) {
            if(min>arr[i]){
                min =arr[i];
            }

        }
        return min;
    }
    //总和
    public int getSum(int[] arr){
        int sum = 0;
        for (int i = 0; i <arr.length ; i++) {
            sum+=arr[i];

        }
        return sum;
    }
    //平均数
    public int getAvg(int[] arr){
        return getSum(arr)/arr.length;
    }
    //遍历数组
    public void print(int[] arr){
        System.out.print("[");
        for (int i = 0; i <arr.length ; i++) {
         if(i == 0){
             System.out.print(arr[i]);
         }else{
             System.out.print(","+arr[i]);
         }
        }
        System.out.println("]");
    }
    //复制数组
    public int[] copy(int[] arr){
        int[] copyArr = new int[arr.length];
        for (int i = 0; i <arr.length ; i++) {
            copyArr[i]=arr[i];
        }
        return copyArr;
    }
    //数组反转
    public void reverse(int[] arr){
        for (int i = 0,j =arr.length-1; i < j ; i++,j--){
            //arr[j]与arr[i]换位
            int temp =arr[i];
            arr[i]=arr[j];
            arr[j] =temp;
        }

    }

    //冒泡
    public void sort(int[] arr){
        for (int i = 0; i <arr.length ; i++) {
            for (int j=0; j <arr.length - 1 -i; j++){
                //arr[j]与arr[i]换位
                int temp =arr[i];
                arr[i]=arr[j];
                arr[j] =temp;
            }

        }

    }

    //查找

    /**
     * 查找目标的索引
     * @param arr    目标数组
     * @param target 目标数
     * @return  没有找到 返回 -1
     */
    public int find(int[] arr,int target){
        for (int i = 0; i <arr.length ; i++) {
            if(target == arr[i]){
            return i;
            }

        }
        //没有找到
        return -1;
    }




}
//根据上一章数组中的常用算法操作，自定义一个操作int[]的工具类。
//涉及到的方法有：求最大值、最小值、总和、平均数、遍历数组、复制数组、
//数组反转、数组排序(默认从小到大排序)、查找等